package com.gjintel.framework.holidayset.service;

import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.gjintel.framework.holidayset.model.HolidaySet;
import com.gjintel.framework.user.model.User;
import com.gjintel.sdk.base.dao.Page;
import com.gjintel.sdk.base.dao.Sort;
import com.gjintel.sdk.base.service.IBaseService;

public interface IHolidaySetService extends IBaseService {
	/**
	 * @description 添加节假日信息
	 * @author lpshen
	 * @param holidaySet
	 * @return boolean
	 */
	void add(HolidaySet holidaySet);
	
	/**
	 * @description 获得所有节假日日期信息
	 * @author lpshen
	 * @return list
	 */
	List<String> findAllByYear(String thisYear);
	
	/**
	 * @description 根据日期更新
	 * @author lpshen
	 * @param date
	 * @return boolean
	 */
	void updateByDate(String date,String userName,String descript);
	
	/**
	 * @description 根据日期返回天数
	 * @author lpshen
	 * @param startDate
	 * @param workdays
	 * @return list
	 */
	List<Date> getDays(String startDate,String endDate);
	
	/**
	 * @description 插入一年的双休日
	 * @author lpshen
	 * @param year
	 * @param createName
	 * @return
	 */
	void saveWeekendsOfYear(String year,String createName);
	
	/**
	 * @description 分页查找数据
	 * @author lpshen
	 * @param page
	 * @param holidaySet
	 * @param sort
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	void findAll(Page page, HolidaySet holidaySet,Sort sort);
	
	/**
	 * @description 根据开始日期，工作日返回截止日期
	 * @author lpshen
	 * @param startDate
	 * @param workdays
	 * @return
	 */
	Date getWorkDayByDays(Date startDate,int workdays);
	
	/**
	 * @description 根据选择的ID进行删除数据
	 * @author lpshen
	 * @param deleteIds
	 * @throws Exception
	 * @return void
	 */
	void removeData(String deleteIds,User user);
	
	/**
	 * @description 根据年份获得该年的双休日
	 * @author lpshen
	 * @param deleteIds
	 * @throws Exception
	 * @return list
	 */
	List<String> getWeekends(int year);
	
	/**
	 * @description 获得两日期之间的日期
	 * @author lpshen
	 * @param p_start，p_end
	 * @return list
	 */
	List<Date> getDatasByDate(Calendar p_start, Calendar p_end);
	
	/**
	 * @description 根据日期，获取库中存在的日期
	 * @author shy
	 * @param date
	 * @return Hoildayset
	 */
	HolidaySet getHolidaySetbyDate(String date);
	
	List<String> findByYear(String thisYear);
}
